|
CALC |
Top |
|
CALC
Realiza un salto a una subrutina si el bit 0 del acumulador es 1. Esta se identifica por una etiqueta (label), y es siempre hacia adelante (no se permiten saltos hacia atrás)
CAL Sub1 ;Salta a la subrutina llamada "Sub1" ST q0.0 ;Instrucción siguiente o punto de retorno de la subrutina LD sm0.4 CALC Sub1 ;Salta a la subrutina llamada "Sub1" si el bit 0 del acumulador es 1 LD sm0.5 CALNC Sub1 ;Salta a la subrutina llamada "Sub1" si el bit 0 del acumulador es 0 END ;Termina el programa y vuelve a ejecutar desde el principio
Sub1 LD i0.0 ;Primera instrucción de la subrutina RETC ;Retorno condicional (si el bit 0 del acumulador es 1) AND i0.1 RETNC ;Retorno condicional (si el bit 0 del acumulador es 0) XOR i0.2 RET ;Retorno incondicional de la subrutina
Encadenamiento de llamados
ld 1 ;Valor 1 al acumulador (Acc) CALC sum_xi_yi ;Ejecuta sum_xi_yi porque el Acc está en 1 CALC suma_yi ;suma_y se ejecutará si Acc quedó en 1 después de haber ejecutado sum_xi_yi CALC a ;a se ejecutará si Acc quedó en 1 después de haber ejecutado suma_yi
sum_xi_yi, suma_yi y a alteran el valor del acumulador. Por eso la siguiente es dependiente de la anterior. Para que el esquema funcione cada una de las subrutinas debería terminar con un LD 1: sum_xi_yi: instrucción ... ... LD 1 ;Valor devuelto en el acumulador definido RET suma_yi: instrucción ... ... LD 1 ;Valor devuelto en el acumulador definido RET
Representación en Ladder
|